//定义一个数值和字符串的联合类型

let str:number|string="str"
//定义一个类型断言
let  someValue:any ="this is a"
let setValue:number =(someValue as string).length
console.log(setValue);

//定义一个 void 实现函数的无返回值

function setSum():void{
     console.log("收到就好");
     
}

//定义一个 never 的函数
function nevers() {
    return Error("never的函数");
}
//分别定义 es5 和 ts 的函数定义

class Protype{
      name:string;
      age:number;
      constructor(name:string,age:number){
         this.name=name;
         this.age=age;
      }
      say(){
          console.log("111");
          
      }
}

let p = new Protype("小",12);
p.say()
//定义函数时， 分别实现参数类型、剩余参数、默认参数
//参数类型
function aa(name:string,age:number){
     console.log(name,age);
     
}
aa("小",12)
//剩余参数
function aa1(name:string,...age:number[]){
    console.log(name,age);
    
}
aa1("小",12,1,2,3,)
//默认参数
function aa2(name:string,age:number=10){
    console.log(name,age);
    
}
aa2("小")

//实现一个函数重载
function ff(name:string,age:string):string;
function ff(name:number,age:number):number;
function ff(name:any,age:any):any{
      return name+age
}

console.log(ff("12","5254"));

//在 ts 中定义一个类并实现继承

class Protype1{
      name:string;
      sum:number;
      constructor(name:string,sum:number){
          this.name=name
          this.sum=sum
      }
      public strs(){            //共有的
          console.log("21")
           this.ect()
           this.est()
      }
      private ect(){          //私有的
        console.log("202");
            
      }
      protected est(){       //受保护的 
           console.log("333");
           
      }

}
class Protype1son extends Protype1{
    constructor(name:string,sum:number){
        super(name,sum)
        this.est()
    }
}
//父实例
let fs=new Protype1("12",263)
fs.strs()

//继承的实例
let es=new Protype1("55",235)
es.strs()


//2种方式定义一个数组（数组中的元素可以是任意类型）

interface Typeenr{
    aa:string;
    bb:number;
    [all:number]:string
}
let  sets :Typeenr={
      aa:"23",
      bb:65,
      2:"gsjd",
      3:"husd"
}

//Ts定义一个求和函数;例Add(2,8,9,6,5,8,7),返回结果45
function Add(...arr:number[]){
   let newarr=  arr.reduce((a,b)=>{
          return a+b
     })
     return newarr
}
console.log(Add(2,8,9,6,5,8,7));   //45
//Ts定义一个函数返回值为boolean类型的判断函数;例isTrue(nudefined),返回false
// function IsTrue(nud:boolean):boolean{
//      return nud
// }

// console.log(IsTrue(undefined));

//数字（乘5）添加：
var arrs= ["a","c",6,"e",5,3,"d"]
function wuwu(arr6:any[]){
    let arr5:number[]=[];
    arr6.forEach((item) => {
        if(typeof(item)=="number"){
            arr5.push(item*5)
        }
    });
    return arr5
    
}
console.log(wuwu(arrs));

//写一个函数，将这个数组中所有的一位数前面补0，输出一个新数组，即最后返回。

export {}
